﻿using System;
using System.Text;
using System.IO;

class Laser
{
    static void Main()
    {
        if (File.Exists("input.txt"))   //проверяваме дали съществува този файл в директорията на програмата, и ако съществува пренасочваме програмата да чете от конзолата
        {
            Console.SetIn(new StreamReader("input.txt"));
        }
        int[] dims = GetThreeNumbersFromConsole();   //първите 3 числа - страните на куба - dimensions
        int[] pos = GetThreeNumbersFromConsole();   //positions - позициите
        int[] vect = GetThreeNumbersFromConsole();  //vector - насочения вектор

        bool[, ,] visited = new bool[dims[0] + 1 , dims[1] + 1, dims[2] + 1];    // за да отбелязваме местата където сме били - параметрите са страните на куба
                                                        //+1 защото началните координати на куба са (1, 1, 1)
        while (true)
        {
            visited[pos[0], pos[1], pos[2]] = true;     //отбелязваме посетената позиция
            //int[] newPos = (int[])pos.Clone();          //новата позиция на вектора, която е нашата сегашна позиция
            int[] newPos = new int[3];          //новата позиция на вектора, която е нашата сегашна позиция
            //pos: (2, 2, 2) 
            //vect: (1, 0, -1)
            //newPos: (3, 2, 1)
            for (int i = 0; i < 3; i++)
            {
                newPos[i] = pos[i] + vect[i];    //новата позиция е базирана на сегашната позиция с отместване (т.е. вектора)                
            }

            //проверяваме дали позицията е посетена
                            // = true                           //дали сме стигнали до ръбовете на куба
            if (visited[newPos[0],newPos[1],newPos[2]] || HowManyIndexesAreLimit(newPos,dims) >= 2)          
	        {
                //next position is visited
                Console.WriteLine("{0} {1} {2}", pos[0], pos[1], pos[2]);
                return;
	        }
            
            //иначе трябва да проверим дали не сме стигнали до стена-това са тези кубчета, на които един от координатите е 0, или 1 в тази задача
            if (HowManyIndexesAreLimit(newPos,dims) == 1)
	        {
                //we've hit the wall - стигнали сме до стена
                //if  == 2 - стигнали сме до ръб
                //if  == 3 - стигнали сме до ъгълчето на куба
                //трябва да намерим кой от трите индекса е стигнал
                //(2, 1, 1)
                //(1, -1, 1)
                ReverseComponent(newPos, vect, dims);
	        }
            //да окажем че сегашната позиция е новата позиция
            for (int i = 0; i < 3; i++)
            {
                pos[i] = newPos[i];
            }
        }
    }

    static void ReverseComponent(int[] newPos, int[] vect, int[] dims)
    {
        for (int i = 0; i < 3; i++)
        {
            if (newPos[i] == 1 && vect[i] == -1)
            {
                vect[i] *= -1;      //обръщаме вектора
            }
            else if (newPos[i] == dims[i] && vect[i] == 1)
            {
                vect[i] *= -1; 
            }            
        }    
    }

    static int HowManyIndexesAreLimit(int[] pos, int[]dims)
    {
        int count = 0;
        for (int i = 0; i < 3; i++)
        {
            if (pos[i] == 1 || pos[i] == dims[i])
            {
                count += 1;
            }
        }
        return count;    
    }

    static int[] GetThreeNumbersFromConsole()
    {
        string input = Console.ReadLine();
        string[] split = input.Split(' ');
        //return split.Select(split => int.Parse(s)).ToArray();     //това е същото като това до края на метода:
        int[] array = new int[3];
        for (int i = 0; i < 3; i++)
        {
            array[i] = int.Parse(split[i]);
        }
        return array;
    }
}

